/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.saber.certificacao.ejbs.stateless.interfaces;

import br.com.saber.certificacao.modelos.Usuario;
import br.com.saber.certificacao.modelos.relacionamentos.ProfessorVersao;
import br.com.saber.certificacao.modelos.relacionamentos.idcompostos.IdProfessorVersaoPk;
import javax.ejb.Local;

/**
 *
 * @author Guilherme
 */
@Local
public interface ProfessorVersaoBeanLocal {
    
    /**
     * Retorna um relacionamento entre professor versão
     * se não existir esse relacionamento retorna
     * null.
     * @param professorId
     * @param idQuestao
     * @return 
     */
    public ProfessorVersao buscarProfessorVersaoPorId(Long professorId , Long idQuestao);
    
    /**
     * Retorna um relacionamento entre professor versão
     * se não existir esse relacionamento retorna
     * null.
     * @param id
     * @return 
     */
    public ProfessorVersao buscarProfessorVersaoPorId(IdProfessorVersaoPk id);
    
    /**
     * Carrega O Set de ProfessorVersao deste usuário.
     * Esta coleção é de demanda Lazy por isso a necessidade
     * desta carga de modo separado.
     * @param usuario
     * @return 
     */
    public Usuario carregarProfessorVersao(Usuario usuario);

    /**
     * Devido não apagar o relacionamento ProfessorVersao, ao salvar um Professor,
     * nas versões removidas a deleção será feita antes de salvar o professor, 
     * garantindo do status dos relacionamentos.
     * @param professor 
     */
    void salvarProfessorVersoes(Usuario professor);
}
